#include <bits/stdc++.h>
#define int long long
using namespace std;
int read() {
	int x(0),f(0);
	char ch=getchar();
	while(!isdigit(ch)) f|=(ch=='-'),ch=getchar();
	while(isdigit(ch)) x=x*10+ch-'0',ch=getchar();
	return f?-x:x;
}
const int N=800005;
int n,cur,hed[N],to[N<<1],nxt[N<<1],c[N<<1],id[N<<1];
void add(int x,int y,int z,int i) {
	to[++cur]=y,c[cur]=z,id[cur]=i,nxt[cur]=hed[x],hed[x]=cur;
	to[++cur]=x,c[cur]=z,id[cur]=i,nxt[cur]=hed[y],hed[y]=cur;
}
namespace sub12 {
	const int NN=2005;
	int f[NN][NN],g[NN][NN],ans[NN],idd[NN],tot;
	vector<int> son[NN];
	void dfs1(int x,int fa,int s) {
		for(int i=hed[x],y;i;i=nxt[i]) {
			if((y=to[i])==fa) continue;
			f[s][y]=min(f[s][x],c[i]);
			if(s==1) idd[y]=id[i];
			dfs1(y,x,s);
			g[s][x]+=g[s][y];
		}
		if(x!=s) g[s][x]+=f[s][x];
	}
	void dfs2(int x,int fa) {
		bool flag=0;
		int yy=0;
		for(int i=hed[x],y;i;i=nxt[i]) {
			if((y=to[i])==fa) continue;
			flag=1;
			dfs2(y,x);
			if(!ans[idd[x]]) ans[idd[x]]=ans[idd[y]],yy=y;
			else {
				for(int j:son[y]) ans[idd[x]]-=g[j][fa]+f[j][x];
				for(int j:son[y]) for(int k:son[yy]) ans[idd[x]]+=f[j][k];
			}
			for(int j:son[y]) son[x].push_back(j),ans[idd[x]]+=2*f[x][j];
		}
		for(int i=1;i<=n;++i) if(x!=i) ans[idd[x]]-=f[x][i];
		son[x].push_back(x);
		if(flag) return;
		ans[idd[x]]=tot;
		for(int i=1;i<=n;++i) if(i!=x) ans[idd[x]]-=f[x][i];
	}
	void work() {
		for(int i=1;i<=n;++i) {
			f[i][i]=1e9;
			dfs1(i,0,i);
			for(int j=i+1;j<=n;++j) tot+=f[i][j];
		}
		dfs2(1,0);
		for(int i=1;i<n;++i) printf("%lld\n",ans[i]);
		exit(0);
	}
}
signed main() {
	freopen("tatooine.in","r",stdin);
	freopen("tatooine.out","w",stdout);
	n=read();
	for(int i=1;i<n;++i) {
		int x=read(),y=read(),z=read();
		add(x,y,z,i);
	}
	if(n<=2000) sub12::work();
	return 0;
}
/*
2
1 2 3

0

3
1 2 4
3 2 5

5
4

4
2 1 10
3 1 1
4 1 5

7
20
12
*/
